home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Commodore Free 38
/
Commodore_Free_Issue_38_2010_Commodore_Computer_Club.d64
/
pla replacement
< prev
next >
Wrap
Text File
|
2023-02-26
|
8KB
|
256 lines
*************************************
WORKING PLA REPLACEMENT FOR MY C64
*************************************
Hello All,
Just wanted to let all of you know
that I FINALLY created a WORKING PLA
Replacement for my C64. I have only
tested it in one of the Breadbox
C64's so far.
I use Ray Carlsons Diagram,
http://personalpages.tds.net
/{$de}rcarlsen/tdsweb/EPROMPLA/
eprompla.jpg
Info:
http://personalpages.tds.net
/{$de}rcarlsen/tdsweb/EPROMPLA/
eprompla.txt
C64 PLA chip replacement using an
EPROM and adaptor latest updates and
corrections 11-20-07
The supply of replacement ICs for
Commodore computers has been
shrinking since Commodore stopped
making chips more than a decade ago.
Most of what you find now are used
"pulls" from existing equipment,
some good, some bad. The most common
failure in the C64 has been IC U17,
a pre-programmed 28 pin generic
82S100 programmable logic array or
PLA. That IC normally runs very hot
and should have been heat sinked. It
was in later versions of the 64.
Since the supply of obsolete
unprogrammed 82S100 ICs has likewise
dried up, a way to replace the
Commodore PLA with some other kind
of device has been discussed many
times on the newsgroup comp.sys.cbm
and elsewhere. A 64K EPROM
programmed with the code from a
working PLA and rewired via a
circuit board or other adaptor to
cross-connect a few pins has had
some success in duplicating the
logic of the original PLA. There are
several different versions of this
modification on the internet. Note
that the code for the EPROM must
match the pinout of the adaptor that
goes with it! The modification I
found takes only a few pin swaps to
make it work. The other one takes
more. Guess which one I chose to
use? ;-)
With a "burner" on my PC, I began
experimenting with various types of
EPROMs when my stock of PLA chips
was depleted. The original PLA
averaged a rather speedy 50nS. The
best information I had early on was
that a very fast IC was needed to
simulate it. Most reprogrammable UV
EPROMs are much slower at 150 to
300nS and I already had some of
those. A one-time-programmable (OTP)
Atmel AT27C512R45 seemed fast enough
with its 45nS response time and they
were cheap at the time, so a batch
of the OTP chips was purchased and
some adaptors made out of
"sandwiched" IC sockets. One adaptor
was needed to extract the PLA code
and get it into my computer, and
another adaptor to make the
programmed EPROM work in the C64.
I'm putting up both adaptor
schematics and the code on my site
if anyone wants to make their own
substitute PLA. The resulting
replacement ICs do work in many C64
boards but not in others, even ones
with the same board number. Now to
the reasons...
One of my C64 boards (250407) will
work with just about any PLA
substitute EPROM from the slowest
250nS to the fastest OTP. Other
boards are -very- fussy about the
replacement PLA. Results with those
boards varied from blank screen to
less than the normal bytes free at
startup to random character colour
errors or program crashes... common
indicators of a failing OEM PLA or
bad RAM. The sub-PLA could be made
to work in some boards by replacing
the VIC, the MPU and/or the CIAs.
For example, a CPU with a later code
date worked in a board with a
sub-PLA whereas the earlier CPU chip
wouldn't even boot up (blank
screen). My oldest 64 board, a 1982
326298, gave me the most trouble.
Most of the chips in it are early
versions. Swapping some of them out
with newer ones made that board work
fine.
The original RAM ICs Commodore used
were either 150nS or 200nS. RAM
chips of a certain speed may work
with the original PLA but not with
the sub-PLA. In one experiment, a
sub-PLA worked with all 200nS RAM,
then one 150nS RAM chip was
substituted, and the bytes free at
startup was reduced although the
original PLA worked fine with that
arrangement. I conclude that C64 ICs
work within a narrow "window" of
acceptable pulse timing, neither too
fast nor too slow. The use of a
substitute PLA in some boards
obviously creates timing errors,
some fatal (blank screen) and others
producing subtle screen "glitches"
and program crashes.
If an EPROM works in a particular
board, that's fine. But, what do you
do if no sub-PLA seems to work? One
workaround I found was to add a
small capacitor (one end tied to
ground) to the replacement IC output
pin 18, the \CAS line to the RAM,
which adds a bit of delay to those
pulses. I experimented with values
between 50pF and 220pF and got good
results. The bottom line here is
that whatever board you have may or
may not work 100% with a sub-PLA. It
may need to be "tweaked", and most
users will not want to do that. So,
a drop-in replacement for the
original PLA that will work with all
boards without any problems is still
unavailable.
When I repair a C64 that needs a
replacement PLA, I can make the sub
work in most cases with chip swaps,
selecting an optimum speed of the
substitute EPROM and/or by using the
time delay capacitor. Testing the
final product involves 1. observing
the bytes free on the opening screen
to see if it's normal, 2. looking
for "glitches", random colour shifts
or odd characters anywhere on the
screen while a program is running,
3. testing with several different
cartridges such as CBM Jupiter
Lander (which refused to load in one
board when everything else seemed to
work) and a passing grade using the
C64 diagnostic cart some kind soul
gave me years ago.
Making the substitute PLA is pretty
straightforward. With a few pins
rewired via an adaptor (schematic is
readpla.jpg) I made with two
"sandwiched" IC sockets, I used my
ERPOM burner to copy the code from a
working PLA chip. The burner reads
it as if it were a 27C512 EPROM and
the resulting file pla.bin has a
checksum of hex DAA0. That code was
burned into a standard 27C512 EPROM.
I then used another cross-wired
adaptor (schematic is eprompla.jpg)
to install the EPROM in my C64. The
files mentioned above are on my
schematics website at
http://staff.washington.edu/rrcc/
uwweb/eprompla/
One last thing... replacing a PLA
with an EPROM in an adaptor socket
that plugs into a board-mounted IC
socket may cause intermittent
operation if the board socket has
loose contacts. One way around that
is to use an adaptor socket with
round pins that are thicker than the
standard replacement types. Of
course the mod PLA socket can be
soldered into the C64 board
directly. It's likely to be the last
time it will be replaced anyway...
as long as it works correctly the
first time it's installed. It
doesn't need to be heat sinked like
the original PLA should have been...
the new chip runs cool.
Ray Carlsen
Much appreciated for the info Ray.
Since I'm using a Promenade C1, I
had to break the file into two 32k
sections as there is NO WAY to
program an entire 64k file with a
Promenade C1. Each file will need
"00 20" inserted into the Beginning
of the file, they will be 32770
bytes in size.
In order to program a 27c512 EPROM.
BEST to use -45ns for the PLA. you
will have to run a ground wire from
the CASE of the Promenade C1 to PIN
#1 on the IC. This will allow you to
program the FIRST HALF (32k) of the
EPROM. Remove the wire to program
the SECOND HALF of the EPROM.
I am using Promshell to do this. You
can find the disk on my FTP site :
ftp://www.n2dvm.com//Commodore/
Programs/Eprom/promshell.zip
Here are the files I used for the
PLA. They already have the "00 20"
added to them to make it easier on
you.
ftp://www.n2dvm.com/Commodore/
Programs/Eprom/PLA-Files.rar
Have fun.
====================================